CREATE PROCEDURE [dbo].[AgregarMateria]
(
	@nombre_materia VARCHAR(100),
  @horas_teoria INT,
	@horas_practica INT,
  @descripcion_materia VARCHAR(200),
	@estatus_materia VARCHAR(20),
  @unidades_credito INT,
	@id_escuela INT
)

AS
BEGIN
  
	SET NOCOUNT ON; 

	DECLARE @idMateria INT;


	INSERT INTO Materia 
	
	VALUES (@nombre_materia,@horas_teoria,@horas_practica,@descripcion_materia,@estatus_materia,@unidades_credito)



	SELECT @idMateria= ( SELECT TOP 1 Materia.id_Materia 

	FROM Materia

	WHERE Materia.nombreMateria=@nombre_materia

	ORDER BY Materia.id_Materia DESC)

		

	INSERT INTO EscuelaMateria values (@id_escuela,@idMateria)

	

END


CREATE PROCEDURE [dbo].[AgregarSeccionMateria]
(
	
  @numero_seccion INT,
	@espacio_max_carga INT,
  @espacio_utilizado INT,
	@fk_periodo VARCHAR(100),
	@fk_profesor INT,
	@fk_materia INT

)

AS
BEGIN
  
	SET NOCOUNT ON; 

	INSERT INTO SeccionMateria 
	
	VALUES (@numero_seccion,@espacio_max_carga,@espacio_utilizado,@fk_periodo,@fk_profesor,@fk_materia)



END




CREATE PROCEDURE [dbo].[ConsultarHorariosPractica]
(
	@id_Practica INT
)
AS
BEGIN
  
				SET NOCOUNT  ON;
				
				SELECT DISTINCT HorarioClase.id_Horario,
												HorarioClase.diaSemana,
												HorarioClase.horaInicio,
												HorarioClase.horaFin,
												Salon.nombre
												

				FROM HorarioClase,
						 Practica,
						 Salon
						
     

				WHERE Practica.id_Practica=@id_Practica AND
							HorarioClase.fk_SeccionPractica=Practica.id_Practica AND
							Salon.id_salon=HorarioClase.fk_Salon
							
  
END



CREATE PROCEDURE [dbo].[ConsultarHorariosSeccion]
(
	@id_Seccion INT
)
AS
BEGIN
  
				SET NOCOUNT  ON;
				
				SELECT DISTINCT HorarioClase.id_Horario,
												HorarioClase.diaSemana,
												HorarioClase.horaInicio,
												HorarioClase.horaFin,
												Salon.nombre
												

				FROM HorarioClase,
						 SeccionMateria,
						 Salon
						
     

				WHERE SeccionMateria.id_Seccion=@id_Seccion AND
							HorarioClase.fk_SeccionMateria=SeccionMateria.id_Seccion AND
							Salon.id_salon=HorarioClase.fk_Salon
							
  
END



CREATE PROCEDURE [dbo].[ConsultarMateriasEscuela]
(
	@id_Escuela INT
)
AS
BEGIN
  
				SET NOCOUNT  ON;
				
				SELECT DISTINCT Materia.id_Materia,
												Materia.nombreMateria,
												Materia.descripcion,
												Materia.horasTeoria,
												Materia.horasPractica,
												Materia.statusMateria,
												Materia.unidadesDeCredito
												

				FROM Escuela,
						 EscuelaMateria,
						 Materia
     

				WHERE Escuela.estado=1 AND
							Escuela.id_Escuela=@id_Escuela AND
						  EscuelaMateria.fk_id_escuela=Escuela.id_Escuela AND
							Materia.id_Materia=EscuelaMateria.fk_id_materia AND
							Materia.statusMateria='Activo'
  
END




CREATE PROCEDURE [dbo].[ConsultarMateriasEstudiante]
(
	@id_Estudiante INT
)
AS
BEGIN
  
				SET NOCOUNT  ON;
				
				SELECT DISTINCT Materia.id_Materia,
												Materia.nombreMateria,
												Materia.descripcion,
												Materia.horasTeoria,
												Materia.horasPractica

				FROM Materia,
						 Estudiante,
             SeccionMateria,
             Listado,
						 PeriodoAcademico
     

				WHERE Estudiante.id_estudiante=@id_Estudiante AND

              Listado.fk_id_estudiante=Estudiante.id_estudiante AND 

							SeccionMateria.id_Seccion=Listado.fk_id_seccion AND

							Materia.id_Materia=SeccionMateria.fk_Materia AND

							Materia.statusMateria='Activo' AND

							SeccionMateria.fk_PeriodoAcademico=PeriodoAcademico.ID_PERIODOACADEMICO AND

							PeriodoAcademico.fechaInicio< GETDATE() AND

							PeriodoAcademico.fechaFin> GETDATE()
  
END






CREATE PROCEDURE [dbo].[ConsultarMateriasProfesor]
(
	@id_Profesor INT
)
AS
BEGIN
  
				SET NOCOUNT  ON;
				
				SELECT DISTINCT Materia.id_Materia,
												Materia.nombreMateria,
												Materia.descripcion,
												Materia.horasTeoria,
												Materia.horasPractica

				FROM Materia,
						 Profesor,
             SeccionMateria,
						 PeriodoAcademico
     

				WHERE Profesor.id_Profesor=@id_Profesor AND

              SeccionMateria.fk_Profesor=Profesor.id_Profesor AND 

							Materia.id_Materia=SeccionMateria.fk_Materia AND

							Materia.statusMateria='Activo' AND

							SeccionMateria.fk_PeriodoAcademico=PeriodoAcademico.ID_PERIODOACADEMICO AND

							PeriodoAcademico.fechaInicio< GETDATE() AND

							PeriodoAcademico.fechaFin> GETDATE()
  
END



CREATE PROCEDURE [dbo].[ConsultarPracticasSeccion]
(
	@id_Seccion INT
)
AS
BEGIN
  
				SET NOCOUNT  ON;
				
				SELECT DISTINCT Practica.id_Practica,
												Practica.numeroSeccion,
												Practica.nombrePractica,
												Practica.statusPractica,
												Practica.fk_Profesor
												

				FROM Practica,
						 SeccionMateria
						
     

				WHERE SeccionMateria.id_Seccion=@id_Seccion AND
							Practica.fk_SeccionMAteria=SeccionMateria.id_Seccion AND
							Practica.statusPractica='Activo'
  
END



CREATE PROCEDURE [dbo].[ConsultarSeccionesMateria]
(
	@id_Materia INT
)
AS
BEGIN
  
				SET NOCOUNT  ON;
				
				SELECT DISTINCT SeccionMateria.id_Seccion,
												SeccionMateria.numeroSeccion,
												SeccionMateria.espacioMaxCarga,
												SeccionMateria.espacioUtilizado,
												SeccionMateria.fk_Profesor
												

				FROM Materia,
						 SeccionMateria,
						 PeriodoAcademico
     

				WHERE Materia.id_Materia=@id_Materia AND
							Materia.statusMateria='Activo' AND
							SeccionMateria.fk_Materia=Materia.id_Materia AND
							SeccionMateria.fk_PeriodoAcademico=PeriodoAcademico.ID_PERIODOACADEMICO AND
							PeriodoAcademico.fechaInicio < GETDATE() AND
							PeriodoAcademico.fechaFin > GETDATE()
  
END




CREATE PROCEDURE [dbo].[EditarMateria]
(
	@id_Materia INT,
	@nombre_materia VARCHAR(100),
  @horas_teoria INT,
	@horas_practica INT,
  @descripcion_materia VARCHAR(200),
	@estatus_materia VARCHAR(20),
  @unidades_credito INT

)

AS
BEGIN
  
	SET NOCOUNT ON; 

	UPDATE Materia 
	
	SET Materia.nombreMateria=@nombre_materia,
			
			Materia.horasTeoria=@horas_teoria,
			
			Materia.horasPractica=@horas_practica,
			
			Materia.descripcion=@descripcion_materia,
			
			Materia.statusMateria=@estatus_materia,
			
			Materia.unidadesDeCredito=@unidades_credito

	WHERE Materia.id_Materia=@id_Materia



END


CREATE PROCEDURE [dbo].[EditarSeccionMateria]
(
	@id_seccion_Materia INT,
  @numero_seccion INT,
	@espacio_max_carga INT,
  @espacio_utilizado INT,
	@fk_periodo VARCHAR(100),
	@fk_profesor INT,
	@fk_materia INT

)

AS
BEGIN
  
	SET NOCOUNT ON; 

	UPDATE SeccionMateria 
	
	SET SeccionMateria.numeroSeccion=@numero_seccion,

			SeccionMateria.espacioMaxCarga=@espacio_max_carga,
			
			SeccionMateria.espacioUtilizado=@espacio_utilizado,

			SeccionMateria.fk_PeriodoAcademico=@fk_periodo,

			SeccionMateria.fk_Profesor=@fk_profesor,

			SeccionMateria.fk_Materia=@fk_materia

	WHERE SeccionMateria.id_Seccion=@id_seccion_Materia



END


CREATE PROCEDURE [dbo].[EliminarMateria]
(
	@id_Materia INT
	
)

AS
BEGIN
  
	SET NOCOUNT ON; 


	DELETE FROM EscuelaMateria

	WHERE EscuelaMateria.fk_id_materia=@id_Materia

	DELETE FROM Materia 

	WHERE Materia.id_Materia=@id_Materia



END





CREATE PROCEDURE [dbo].[EliminarSeccionMateria]
(
	@id_SeccionMateria INT
	
)

AS
BEGIN
  
	SET NOCOUNT ON; 

	DELETE FROM SeccionMateria 

	WHERE SeccionMateria.id_Seccion=@id_SeccionMateria



END




